package com.yanggu.scala.chapater11.stream

object StreamDem01 {

  def main(args: Array[String]): Unit = {
    //Stream是一个集合。和java中的stream的概念完全不一样。
    //这个集合，可以用于存放无穷多个元素，但是这无穷个元素并不会一次性生产出来，而是需要用到多大的区间，就会动态的生产。
    //末尾元素遵循lazy规则(即:要使用结果才进行计算的)。
    def numsForm(n: BigInt): Stream[BigInt] = n #:: numsForm(n + 1)

    val stream1 = numsForm(1)
    println(stream1)

    //取出第一个元素
    println(stream1.head)

    //取出末尾元素。当对流执行tail操作是，就会产生一个新的数据
    println(stream1.tail)
    println(stream1)
  }

}
